EventBridge Scheduler から直接 Knowledge base データソースの同期処理を行ってみた
こんにちは、森田です。
以下のアップデートで EventBridge Scheduler から直接 Amazon Bedrock のAPIを実行できるようになりました。
このアップデートで何が嬉しいかというと、 Knowledge bases for Amazon Bedrock のデータソース同期処理が EventBridge Scheduler から直接できるようになりました。
従来までは、EventBridge Scheduler から直接の同期処理ができないため、 Step Functions や AWS Lambda での処理となっていましたが、今回のアップデートでより簡単に同期処理の構成ができるようになります
やってみた
前提条件
すでに Knowledge base, DataSourceは作成済みとします。
今回の検証では、同期処理をわかりやすくするため、事前の同期も行なっていません。
Schedulerの作成
Schedulerの作成を行なっていきます。
以下のCloudFormationテンプレートで必要なリソースを一括で作成します。
CloudFormationテンプレート
---
AWSTemplateFormatVersion: '2010-09-09'
Description: EventBridge Scheduler KnowledgeBase DataSource startIngestionJob
Parameters:
DataSourceId:
Type: String
KnowledgeBaseId:
Type: String
ScheduleTime:
Type: String
Default: "cron(40 21 * * ? *)"
ScheduleTimezone:
Type: String
Default: Japan
Resources:
SchedulestartIngestionJob:
Type: AWS::Scheduler::Schedule
Properties:
Name: !Sub '${KnowledgeBaseId}-${KnowledgeBaseId}-startIngestionJob'
Description: !Sub 'knowledgeBase startIngestionJob'
ScheduleExpression: !Ref ScheduleTime
ScheduleExpressionTimezone: !Ref ScheduleTimezone
FlexibleTimeWindow:
Mode: "OFF"
State: ENABLED
Target:
Arn: arn:aws:scheduler:::aws-sdk:bedrockagent:startIngestionJob
Input: !Sub |-
{
"DataSourceId": "${DataSourceId}",
"KnowledgeBaseId": "${KnowledgeBaseId}"
}
RoleArn:
Fn::GetAtt:
- SchedulerRole
- Arn
SchedulerRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- scheduler.amazonaws.com
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: startIngestionJob
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- bedrock:StartIngestionJob
Resource:
- !Sub "arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:knowledge-base/${KnowledgeBaseId}"
CloudFormationのパラメータとしてKnowledge base, DataSourceのID入力が必要となります。
ジョブの実行を確認
CloudFormationのパラメータで入力した時間になるとSchedulerからAPIが実行され、同期処理が開始します。
しばらく待つと以下のように同期処理が完了となります。
回答を生成してみる
Kendraのドキュメントを追加したため、Kendraに関しての質問を行い、正しくソースを利用するか確認してみます。
以下の通り、ソースの詳細が確認できました。
さいごに
EventBridge Schedulerを利用することで、簡単にKnowledge baseのデータソースに対しての同期処理が実現できますのでぜひ使ってみてください。